/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package presentacion;

import dtos.DTOFilaPedidoNegocio;
import dtos.DTOPedido;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import logicaNegocio.ExpertoProcesarPedido;
import logicaNegocio.ObservadorPedidoNuevo;
import logicaNegocio.SuscriptorPedidoNuevo;
import presentacion.models.TableModelPedidoNegocio;

/**
 *
 * @author Sebastian
 */
public class ControladorProcesarPedido implements ObservadorPedidoNuevo {

    private ExpertoProcesarPedido expertoProcesarPedido;
    private TableModelPedidoNegocio tableModelPedidoNegocio;
    private JFrame ventanaActiva;

    public ControladorProcesarPedido() {
        SuscriptorPedidoNuevo.getInstancia().agregarObservador(this);
        expertoProcesarPedido = new ExpertoProcesarPedido();
    }

    public void crearIUProcesarPedido() {
//        IUProcesarPedido.main("Pantalla Buffet", this);
        ventanaActiva = new IUProcesarPedido(this);
    }
//
//    public void setVentanaActiva(JFrame ventanaActiva) {
//        this.ventanaActiva = ventanaActiva;
//    }

    @Override
    public void notificar(DTOFilaPedidoNegocio dTOFilaPedidoNegocio) {
        getTableModelPedidoNegocio().addRow(dTOFilaPedidoNegocio);

        JDialog noti = new JDialog(ventanaActiva, JDialog.ModalityType.DOCUMENT_MODAL);
        javax.swing.JTextArea tfMensaje = new javax.swing.JTextArea();
        noti.getContentPane().add(tfMensaje, java.awt.BorderLayout.CENTER);
        noti.setSize(240, 100);
        noti.setLocation(800, 100);
        tfMensaje.setEditable(false);
        noti.add(tfMensaje);
        tfMensaje.setText("\n    Ingreso un nuevo pedido");
        noti.setTitle("Notificación");
        noti.setVisible(true);

//        JOptionPane.showMessageDialog(ventanaActiva, "Ingreso un nuevo pedido");

    }

    public TableModelPedidoNegocio getTableModelPedidoNegocio() {
        if (tableModelPedidoNegocio == null) {
            tableModelPedidoNegocio = new TableModelPedidoNegocio();
        }
        return tableModelPedidoNegocio;
    }

    public void setTableModelPedidoNegocio(TableModelPedidoNegocio tableModelPedidoNegocio) {
        this.tableModelPedidoNegocio = tableModelPedidoNegocio;
    }

    public boolean modificarEstadoPedido(int codNuevoEstadoPedido, int filaSeleccionada) {
        if (!expertoProcesarPedido.modificarEstadoPedido(codNuevoEstadoPedido, tableModelPedidoNegocio.getRow(filaSeleccionada))) {
            mensajeErrorCambioEstado();
            return false;
        } else {
            return true;
        }
    }

    private void mensajeErrorCambioEstado() {
        JDialog noti = new JDialog(ventanaActiva, JDialog.ModalityType.DOCUMENT_MODAL);
        javax.swing.JTextArea tfMensaje = new javax.swing.JTextArea();
        noti.getContentPane().add(tfMensaje, java.awt.BorderLayout.CENTER);
        noti.setSize(350, 150);
        tfMensaje.setEditable(false);
        noti.add(tfMensaje);
        tfMensaje.setText("La modificación de estado del pedido \n que desea realizar es invalida");
        noti.setTitle("Error cambio estado pedido");
        noti.setVisible(true);
    }

    public int getCodigoEstadoPedido(String nombreEstado) {
        return expertoProcesarPedido.getCodigoEstadoPedido(nombreEstado);
    }

    public void verDetallePedido(int filaSeleccionada) {
        DTOPedido dTOPedido = expertoProcesarPedido.verDetallePedido(tableModelPedidoNegocio.getRow(filaSeleccionada));
        new IUVerPedido(dTOPedido, ventanaActiva);
    }
    
}
